package com.aleyn.router.inject.instance

/**
 * @author : Aleyn
 * @date : 2023/07/27 : 23:58
 *
 * 工厂模式的实例工厂。
 * 每次请求获取实例时，都会创建一个新的实例。
 *
 * @param T 实例的类型。
 * @param definition 实例的定义信息。
 */
class FactoryInstanceFactory<T>(definition: Definition<T>) : InstanceFactory<T>(definition) {

    /**
     * 工厂模式下，实例永远不会被“创建”和持有，所以总是返回 false。
     */
    override fun isCreated(): Boolean = false

    /**
     * 获取一个实例。
     * 每次调用都会通过 `create(context)` 创建并返回一个全新的实例。
     *
     * @param context 实例创建时所需的上下文信息，包含参数等。
     * @return 创建的新实例。
     */
    override fun get(context: InstanceData) = create(context)
}